let mobileCode = ''
const app = getApp()
Page({
  data: {
    // 倒计时组件是否展示 true展示/false不展示
    countDownVisible: false,
    timeData: {},
    // 手机号
    mobile: '',
    // 验证码
    code: '',
    // 重定向页面的地址
    redirectURL: '',
  },

  onLoad({ redirectURL }) {
    // console.log(redirectURL)
    this.setData({
      redirectURL,
    })
  },

  countDownChange(ev) {
    // console.log(ev)
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },

  // 1. 获取短信验证码
  async getCode() {
    // 1.1 校验手机号
    if (!wx.utils.verifyMobile(this.data.mobile.trim())) return

    // 1.2 调用获取验证码的接口
    const { code, data } = await wx.http.get('/code', { mobile: this.data.mobile })
    if (code !== 10000) return wx.utils.toast('获取短信验证码失败')
    wx.utils.toast('获取验证码成功, 请查收')
    // 后门测试: 记录验证码到变量
    // console.log(data)
    mobileCode = data.code

    // 1.3 开启倒计时
    this.setData({
      countDownVisible: true,
    })
  },

  // 2. 复制验证码到粘贴板
  copyCode() {
    wx.setClipboardData({
      data: mobileCode,
    })
  },

  // 3. 登录
  async login() {
    // 3.1 校验手机号和验证码
    if (!wx.utils.verifyMobile(this.data.mobile.trim())) return
    if (!wx.utils.verifyCode(this.data.code.trim())) return
    // 3.2 调用登录接口
    const { mobile, code } = this.data
    const res = await wx.http.post('/login', { mobile, code })
    if (res.code !== 10000) return wx.utils.toast('手机号或验证码不正确')
    // 3.3 存储token和refreshtoken
    // console.log(res.data)
    app.setToken(res.data.token, res.data.refreshToken)

    // 3.4 重定向到来登录的页面去
    wx.utils.toast('登录成功~')

    // 3.5 判断是否去我的页面(tabBar页面)
    // tabBar页面不能用wx.redirectTo或者wx.navigateTo跳转, 只能用wx.switchTab跳转
    console.log(this.data.redirectURL)
    if (this.data.redirectURL === '/pages/my/index') {
      return wx.switchTab({
        url: this.data.redirectURL,
      })
    }

    // 3.6 非tabBar页面跳转
    wx.redirectTo({
      url: this.data.redirectURL,
    })
  },
})
